package com.jeesite.modules.common.service;

import com.jeesite.common.lang.StringUtils;
import com.jeesite.modules.sys.entity.Employee;
import com.jeesite.modules.sys.entity.EmployeeOffice;
import com.jeesite.modules.sys.entity.Office;
import com.jeesite.modules.sys.service.OfficeService;
import com.jeesite.modules.sys.utils.EmpUtils;
import com.jeesite.modules.utils.OfficeUtil;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @description:
 * @author: ciye
 * @date: 2022/3/15 11:21
 */
@Service
@RequiredArgsConstructor
public class SysOfficeUnitService {

    @Autowired
    private OfficeService officeService;

    /**
     * 判断当前登录用户是否是秘书一科
     * @return
     */
    public Boolean checkSecretaryOne() {
        Boolean flag = false;
        // 获取当前用户选择的机构
        Office currentOffice = OfficeUtil.getCurrentOffice();
        if (currentOffice != null) {
            if (StringUtils.equals("286", currentOffice.getOfficeCode())) {
                // 当前机构即为【秘书一科】
                flag = true;
            } else if (StringUtils.equals("263", currentOffice.getOfficeCode())) {
                // 当前选择机构是【市政府办公室】
                // 检查当前登录用户是否有【秘书一科】
                Employee employee = EmpUtils.getEmployee();
                // 获取当前用户所属机构
                Office office = employee.getOffice();
                if (StringUtils.equals("286", office.getOfficeCode())) {
                    flag = true;
                }
                // 检查附属机构
                if (!flag) {
                    List<EmployeeOffice> employeeOfficeList = employee.getEmployeeOfficeList();
                    for (EmployeeOffice item : employeeOfficeList) {
                        if (StringUtils.equals("286", item.getOfficeCode())) {
                            flag = true;
                        }
                    }
                }
            }
        }
        return flag;
    }

    /**
     * 判断当前登录用户是否是其他秘书科室
     * @return
     */
    public Boolean checkSecretaryOther() {
        Boolean flag = false;
        // 获取当前用户选择的单位
        Office currentOffice =  getLatestUnitByOffice() ;
        if (currentOffice != null && !StringUtils.equals("286", currentOffice.getOfficeCode())) {
            // 检查当前选择单位是否是【市政府办公室】
            if (StringUtils.equals("263", currentOffice.getOfficeCode())) {
                // 检查当前登录用户是否有其他秘书科室
                Employee employee = EmpUtils.getEmployee();
                // 获取当前用户所属机构
                Office office = employee.getOffice();
                if (!StringUtils.equals("286", office.getOfficeCode()) && office.getOfficeName().startsWith("秘书") && office.getOfficeName().endsWith("科")) {
                    flag = true;
                }
                // 检查附属机构
                if (!flag) {
                    List<EmployeeOffice> employeeOfficeList = employee.getEmployeeOfficeList();
                    for (EmployeeOffice item : employeeOfficeList) {
                        if (!StringUtils.equals("286", office.getOfficeCode()) && item.getOfficeName().startsWith("秘书") && item.getOfficeName().endsWith("科")) {
                            flag = true;
                        }
                    }
                }
            }
        }
        return flag;
    }

    /**
     * 返回当前登录人的最近的单位
     * @return
     */
    public Office getLatestUnitByOffice() {
        Office latestUnit = new Office();
        String officeCode = OfficeUtil.getCurrentOffice().getOfficeCode();
        if (StringUtils.isNotBlank(officeCode)) {
            latestUnit = officeService.getLatestUnitByOffice(officeCode);
        }
        return latestUnit;
    }
}
